; RUN: llvm-undname < %s | FileCheck %s

; CHECK-NOT: Invalid mangled name

??_C@_01CNACBAHC@?$PP?$AA@
??_C@_01DEBJCBDD@?$PO?$AA@
??_C@_01BPDEHCPA@?$PN?$AA@
??_C@_01GCPEDLB@?$PM?$AA@
??_C@_01EJGONFHG@?$PL?$AA@
??_C@_01FAHFOEDH@?z?$AA@
??_C@_01HLFILHPE@?y?$AA@
??_C@_01GCEDIGLF@?x?$AA@
??_C@_01OFNLJKHK@?w?$AA@
??_C@_01PMMAKLDL@?v?$AA@
??_C@_01NHONPIPI@?u?$AA@
??_C@_01MOPGMJLJ@?t?$AA@
??_C@_01IBLHFPHO@?s?$AA@
??_C@_01JIKMGODP@?r?$AA@
??_C@_01LDIBDNPM@?q?$AA@
??_C@_01KKJKAMLN@?p?$AA@
??_C@_01GHMAACCD@?o?$AA@
??_C@_01HONLDDGC@?n?$AA@
??_C@_01FFPGGAKB@?m?$AA@
??_C@_01EMONFBOA@?l?$AA@
??_C@_01DKMMHCH@?k?$AA@
??_C@_01BKLHPGGG@?j?$AA@
??_C@_01DBJKKFKF@?i?$AA@
??_C@_01CIIBJEOE@?h?$AA@
??_C@_01KPBJIICL@?g?$AA@
??_C@_01LGACLJGK@?f?$AA@
??_C@_01JNCPOKKJ@?e?$AA@
??_C@_01IEDENLOI@?d?$AA@
??_C@_01MLHFENCP@?c?$AA@
??_C@_01NCGOHMGO@?b?$AA@
??_C@_01PJEDCPKN@?a?$AA@
??_C@_01OAFIBOOM@?$OA?$AA@
??_C@_01LIIGDENA@?$NP?$AA@
??_C@_01KBJNAFJB@?$NO?$AA@
??_C@_01IKLAFGFC@?$NN?$AA@
??_C@_01JDKLGHBD@?$NM?$AA@
??_C@_01NMOKPBNE@?$NL?$AA@
??_C@_01MFPBMAJF@?Z?$AA@
??_C@_01OONMJDFG@?Y?$AA@
??_C@_01PHMHKCBH@?X?$AA@
??_C@_01HAFPLONI@?W?$AA@
??_C@_01GJEEIPJJ@?V?$AA@
??_C@_01ECGJNMFK@?U?$AA@
??_C@_01FLHCONBL@?T?$AA@
??_C@_01BEDDHLNM@?S?$AA@
??_C@_01NCIEKJN@?R?$AA@
??_C@_01CGAFBJFO@?Q?$AA@
??_C@_01DPBOCIBP@?P?$AA@
??_C@_01PCEECGIB@?O?$AA@
??_C@_01OLFPBHMA@?N?$AA@
??_C@_01MAHCEEAD@?M?$AA@
??_C@_01NJGJHFEC@?L?$AA@
??_C@_01JGCIODIF@?K?$AA@
??_C@_01IPDDNCME@?J?$AA@
??_C@_01KEBOIBAH@?I?$AA@
??_C@_01LNAFLAEG@?H?$AA@
??_C@_01DKJNKMIJ@?G?$AA@
??_C@_01CDIGJNMI@?F?$AA@
??_C@_01IKLMOAL@?E?$AA@
??_C@_01BBLAPPEK@?D?$AA@
??_C@_01FOPBGJIN@?C?$AA@
??_C@_01EHOKFIMM@?B?$AA@
??_C@_01GMMHALAP@?A?$AA@
??_C@_01HFNMDKEO@?$MA?$AA@
??_C@_01NNHLFPHH@?$LP?$AA@
??_C@_01MEGAGODG@?$LO?$AA@
??_C@_01OPENDNPF@?$LN?$AA@
??_C@_01PGFGAMLE@?$LM?$AA@
??_C@_01LJBHJKHD@?$LL?$AA@
??_C@_01KAAMKLDC@?$LK?$AA@
??_C@_01ILCBPIPB@?$LJ?$AA@
??_C@_01JCDKMJLA@?$LI?$AA@
??_C@_01BFKCNFHP@?$LH?$AA@
??_C@_01MLJOEDO@?$LG?$AA@
??_C@_01CHJELHPN@?$LF?$AA@
??_C@_01DOIPIGLM@?$LE?$AA@
??_C@_01HBMOBAHL@?$LD?$AA@
??_C@_01GINFCBDK@?$LC?$AA@
??_C@_01EDPIHCPJ@?$LB?$AA@
??_C@_01FKODEDLI@?$LA?$AA@
??_C@_01JHLJENCG@?$KP?$AA@
??_C@_01IOKCHMGH@?$KO?$AA@
??_C@_01KFIPCPKE@?$KN?$AA@
??_C@_01LMJEBOOF@?$KM?$AA@
??_C@_01PDNFIICC@?$KL?$AA@
??_C@_01OKMOLJGD@?$KK?$AA@
??_C@_01MBODOKKA@?$KJ?$AA@
??_C@_01NIPINLOB@?$KI?$AA@
??_C@_01FPGAMHCO@?$KH?$AA@
??_C@_01EGHLPGGP@?$KG?$AA@
??_C@_01GNFGKFKM@?$KF?$AA@
??_C@_01HEENJEON@?$KE?$AA@
??_C@_01DLAMACCK@?$KD?$AA@
??_C@_01CCBHDDGL@?$KC?$AA@
??_C@_01JDKGAKI@?$KB?$AA@
??_C@_01BACBFBOJ@?$KA?$AA@
??_C@_01EIPPHLNF@?$JP?$AA@
??_C@_01FBOEEKJE@?$JO?$AA@
??_C@_01HKMJBJFH@?$JN?$AA@
??_C@_01GDNCCIBG@?$JM?$AA@
??_C@_01CMJDLONB@?$JL?$AA@
??_C@_01DFIIIPJA@?$JK?$AA@
??_C@_01BOKFNMFD@?$JJ?$AA@
??_C@_01HLOONBC@?$JI?$AA@
??_C@_01IACGPBNN@?$JH?$AA@
??_C@_01JJDNMAJM@?$JG?$AA@
??_C@_01LCBAJDFP@?$JF?$AA@
??_C@_01KLALKCBO@?$JE?$AA@
??_C@_01OEEKDENJ@?$JD?$AA@
??_C@_01PNFBAFJI@?$JC?$AA@
??_C@_01NGHMFGFL@?$JB?$AA@
??_C@_01MPGHGHBK@?$JA?$AA@
??_C@_01CDNGJIE@?$IP?$AA@
??_C@_01BLCGFIMF@?$IO?$AA@
??_C@_01DAALALAG@?$IN?$AA@
??_C@_01CJBADKEH@?$IM?$AA@
??_C@_01GGFBKMIA@?$IL?$AA@
??_C@_01HPEKJNMB@?$IK?$AA@
??_C@_01FEGHMOAC@?$IJ?$AA@
??_C@_01ENHMPPED@?$II?$AA@
??_C@_01MKOEODIM@?$IH?$AA@
??_C@_01NDPPNCMN@?$IG?$AA@
??_C@_01PINCIBAO@?$IF?$AA@
??_C@_01OBMJLAEP@?$IE?$AA@
??_C@_01KOIICGII@?$ID?$AA@
??_C@_01LHJDBHMJ@?$IC?$AA@
??_C@_01JMLOEEAK@?$IB?$AA@
??_C@_01IFKFHFEL@?$IA?$AA@
??_C@_01BGIBIIDJ@?$HP?$AA@
??_C@_01PJKLJHI@?$HO?$AA@
??_C@_01CELHOKLL@?$HN?$AA@
??_C@_01DNKMNLPK@?$HM?$AA@
??_C@_01HCONENDN@?$HL?$AA@
??_C@_01GLPGHMHM@z?$AA@
??_C@_01EANLCPLP@y?$AA@
??_C@_01FJMABOPO@x?$AA@
??_C@_01NOFIACDB@w?$AA@
??_C@_01MHEDDDHA@v?$AA@
??_C@_01OMGOGALD@u?$AA@
??_C@_01PFHFFBPC@t?$AA@
??_C@_01LKDEMHDF@s?$AA@
??_C@_01KDCPPGHE@r?$AA@
??_C@_01IIACKFLH@q?$AA@
??_C@_01JBBJJEPG@p?$AA@
??_C@_01FMEDJKGI@o?$AA@
??_C@_01EFFIKLCJ@n?$AA@
??_C@_01GOHFPIOK@m?$AA@
??_C@_01HHGOMJKL@l?$AA@
??_C@_01DICPFPGM@k?$AA@
??_C@_01CBDEGOCN@j?$AA@
??_C@_01KBJDNOO@i?$AA@
??_C@_01BDACAMKP@h?$AA@
??_C@_01JEJKBAGA@g?$AA@
??_C@_01INIBCBCB@f?$AA@
??_C@_01KGKMHCOC@e?$AA@
??_C@_01LPLHEDKD@d?$AA@
??_C@_01PAPGNFGE@c?$AA@
??_C@_01OJONOECF@b?$AA@
??_C@_01MCMALHOG@a?$AA@
??_C@_01NLNLIGKH@?$GA?$AA@
??_C@_01IDAFKMJL@_?$AA@
??_C@_01JKBOJNNK@?$FO?$AA@
??_C@_01LBDDMOBJ@?$FN?$AA@
??_C@_01KICIPPFI@?2?$AA@
??_C@_01OHGJGJJP@?$FL?$AA@
??_C@_01POHCFINO@Z?$AA@
??_C@_01NFFPALBN@Y?$AA@
??_C@_01MMEEDKFM@X?$AA@
??_C@_01ELNMCGJD@W?$AA@
??_C@_01FCMHBHNC@V?$AA@
??_C@_01HJOKEEBB@U?$AA@
??_C@_01GAPBHFFA@T?$AA@
??_C@_01CPLAODJH@S?$AA@
??_C@_01DGKLNCNG@R?$AA@
??_C@_01BNIGIBBF@Q?$AA@
??_C@_01EJNLAFE@P?$AA@
??_C@_01MJMHLOMK@O?$AA@
??_C@_01NANMIPIL@N?$AA@
??_C@_01PLPBNMEI@M?$AA@
??_C@_01OCOKONAJ@L?$AA@
??_C@_01KNKLHLMO@K?$AA@
??_C@_01LELAEKIP@J?$AA@
??_C@_01JPJNBJEM@I?$AA@
??_C@_01IGIGCIAN@H?$AA@
??_C@_01BBODEMC@G?$AA@
??_C@_01BIAFAFID@F?$AA@
??_C@_01DDCIFGEA@E?$AA@
??_C@_01CKDDGHAB@D?$AA@
??_C@_01GFHCPBMG@C?$AA@
??_C@_01HMGJMAIH@B?$AA@
??_C@_01FHEEJDEE@A?$AA@
??_C@_01EOFPKCAF@?$EA?$AA@
??_C@_01OGPIMHDM@?$DP?$AA@
??_C@_01PPODPGHN@?$DO?$AA@
??_C@_01NEMOKFLO@?$DN?$AA@
??_C@_01MNNFJEPP@?$DM?$AA@
??_C@_01ICJEACDI@?$DL?$AA@
??_C@_01JLIPDDHJ@?3?$AA@
??_C@_01LAKCGALK@9?$AA@
??_C@_01KJLJFBPL@8?$AA@
??_C@_01COCBENDE@7?$AA@
??_C@_01DHDKHMHF@6?$AA@
??_C@_01BMBHCPLG@5?$AA@
??_C@_01FAMBOPH@4?$AA@
??_C@_01EKENIIDA@3?$AA@
??_C@_01FDFGLJHB@2?$AA@
??_C@_01HIHLOKLC@1?$AA@
??_C@_01GBGANLPD@0?$AA@
??_C@_01KMDKNFGN@?1?$AA@
??_C@_01LFCBOECM@?4?$AA@
??_C@_01JOAMLHOP@?9?$AA@
??_C@_01IHBHIGKO@?0?$AA@
??_C@_01MIFGBAGJ@?$CL?$AA@
??_C@_01NBENCBCI@?$CK?$AA@
??_C@_01PKGAHCOL@?$CJ?$AA@
??_C@_01ODHLEDKK@?$CI?$AA@
??_C@_01GEODFPGF@?8?$AA@
??_C@_01HNPIGOCE@?$CG?$AA@
??_C@_01FGNFDNOH@?$CF?$AA@
??_C@_01EPMOAMKG@$?$AA@
??_C@_01IPJKGB@?$CD?$AA@
??_C@_01BJJEKLCA@?$CC?$AA@
??_C@_01DCLJPIOD@?$CB?$AA@
??_C@_01CLKCMJKC@?5?$AA@
??_C@_01HDHMODJO@?$BP?$AA@
??_C@_01GKGHNCNP@?$BO?$AA@
??_C@_01EBEKIBBM@?$BN?$AA@
??_C@_01FIFBLAFN@?$BM?$AA@
??_C@_01BHBACGJK@?$BL?$AA@
??_C@_01OALBHNL@?$BK?$AA@
??_C@_01CFCGEEBI@?$BJ?$AA@
??_C@_01DMDNHFFJ@?$BI?$AA@
??_C@_01LLKFGJJG@?$BH?$AA@
??_C@_01KCLOFINH@?$BG?$AA@
??_C@_01IJJDALBE@?$BF?$AA@
??_C@_01JAIIDKFF@?$BE?$AA@
??_C@_01NPMJKMJC@?$BD?$AA@
??_C@_01MGNCJNND@?$BC?$AA@
??_C@_01ONPPMOBA@?$BB?$AA@
??_C@_01PEOEPPFB@?$BA?$AA@
??_C@_01DJLOPBMP@?$AP?$AA@
??_C@_01CAKFMAIO@?$AO?$AA@
??_C@_01LIIJDEN@?$AN?$AA@
??_C@_01BCJDKCAM@?$AM?$AA@
??_C@_01FNNCDEML@?$AL?$AA@
??_C@_01EEMJAFIK@?6?$AA@
??_C@_01GPOEFGEJ@?7?$AA@
??_C@_01HGPPGHAI@?$AI?$AA@
??_C@_01PBGHHLMH@?$AH?$AA@
??_C@_01OIHMEKIG@?$AG?$AA@
??_C@_01MDFBBJEF@?$AF?$AA@
??_C@_01NKEKCIAE@?$AE?$AA@
??_C@_01JFALLOMD@?$AD?$AA@
??_C@_01IMBAIPIC@?$AC?$AA@
??_C@_01KHDNNMEB@?$AB?$AA@
??_C@_01LOCGONAA@?$AA?$AA@

; CHECK: "\xFF"
; CHECK: "\xFE"
; CHECK: "\xFD"
; CHECK: "\xFC"
; CHECK: "\xFB"
; CHECK: "\xFA"
; CHECK: "\xF9"
; CHECK: "\xF8"
; CHECK: "\xF7"
; CHECK: "\xF6"
; CHECK: "\xF5"
; CHECK: "\xF4"
; CHECK: "\xF3"
; CHECK: "\xF2"
; CHECK: "\xF1"
; CHECK: "\xF0"
; CHECK: "\xEF"
; CHECK: "\xEE"
; CHECK: "\xED"
; CHECK: "\xEC"
; CHECK: "\xEB"
; CHECK: "\xEA"
; CHECK: "\xE9"
; CHECK: "\xE8"
; CHECK: "\xE7"
; CHECK: "\xE6"
; CHECK: "\xE5"
; CHECK: "\xE4"
; CHECK: "\xE3"
; CHECK: "\xE2"
; CHECK: "\xE1"
; CHECK: "\xE0"
; CHECK: "\xDF"
; CHECK: "\xDE"
; CHECK: "\xDD"
; CHECK: "\xDC"
; CHECK: "\xDB"
; CHECK: "\xDA"
; CHECK: "\xD9"
; CHECK: "\xD8"
; CHECK: "\xD7"
; CHECK: "\xD6"
; CHECK: "\xD5"
; CHECK: "\xD4"
; CHECK: "\xD3"
; CHECK: "\xD2"
; CHECK: "\xD1"
; CHECK: "\xD0"
; CHECK: "\xCF"
; CHECK: "\xCE"
; CHECK: "\xCD"
; CHECK: "\xCC"
; CHECK: "\xCB"
; CHECK: "\xCA"
; CHECK: "\xC9"
; CHECK: "\xC8"
; CHECK: "\xC7"
; CHECK: "\xC6"
; CHECK: "\xC5"
; CHECK: "\xC4"
; CHECK: "\xC3"
; CHECK: "\xC2"
; CHECK: "\xC1"
; CHECK: "\xC0"
; CHECK: "\xBF"
; CHECK: "\xBE"
; CHECK: "\xBD"
; CHECK: "\xBC"
; CHECK: "\xBB"
; CHECK: "\xBA"
; CHECK: "\xB9"
; CHECK: "\xB8"
; CHECK: "\xB7"
; CHECK: "\xB6"
; CHECK: "\xB5"
; CHECK: "\xB4"
; CHECK: "\xB3"
; CHECK: "\xB2"
; CHECK: "\xB1"
; CHECK: "\xB0"
; CHECK: "\xAF"
; CHECK: "\xAE"
; CHECK: "\xAD"
; CHECK: "\xAC"
; CHECK: "\xAB"
; CHECK: "\xAA"
; CHECK: "\xA9"
; CHECK: "\xA8"
; CHECK: "\xA7"
; CHECK: "\xA6"
; CHECK: "\xA5"
; CHECK: "\xA4"
; CHECK: "\xA3"
; CHECK: "\xA2"
; CHECK: "\xA1"
; CHECK: "\xA0"
; CHECK: "\x9F"
; CHECK: "\x9E"
; CHECK: "\x9D"
; CHECK: "\x9C"
; CHECK: "\x9B"
; CHECK: "\x9A"
; CHECK: "\x99"
; CHECK: "\x98"
; CHECK: "\x97"
; CHECK: "\x96"
; CHECK: "\x95"
; CHECK: "\x94"
; CHECK: "\x93"
; CHECK: "\x92"
; CHECK: "\x91"
; CHECK: "\x90"
; CHECK: "\x8F"
; CHECK: "\x8E"
; CHECK: "\x8D"
; CHECK: "\x8C"
; CHECK: "\x8B"
; CHECK: "\x8A"
; CHECK: "\x89"
; CHECK: "\x88"
; CHECK: "\x87"
; CHECK: "\x86"
; CHECK: "\x85"
; CHECK: "\x84"
; CHECK: "\x83"
; CHECK: "\x82"
; CHECK: "\x81"
; CHECK: "\x80"
; CHECK: "\x7F"
; CHECK: "~"
; CHECK: "}"
; CHECK: "|"
; CHECK: "{"
; CHECK: "z"
; CHECK: "y"
; CHECK: "x"
; CHECK: "w"
; CHECK: "v"
; CHECK: "u"
; CHECK: "t"
; CHECK: "s"
; CHECK: "r"
; CHECK: "q"
; CHECK: "p"
; CHECK: "o"
; CHECK: "n"
; CHECK: "m"
; CHECK: "l"
; CHECK: "k"
; CHECK: "j"
; CHECK: "i"
; CHECK: "h"
; CHECK: "g"
; CHECK: "f"
; CHECK: "e"
; CHECK: "d"
; CHECK: "c"
; CHECK: "b"
; CHECK: "a"
; CHECK: "`"
; CHECK: "_"
; CHECK: "^"
; CHECK: "]"
; CHECK: "\\"
; CHECK: "["
; CHECK: "Z"
; CHECK: "Y"
; CHECK: "X"
; CHECK: "W"
; CHECK: "V"
; CHECK: "U"
; CHECK: "T"
; CHECK: "S"
; CHECK: "R"
; CHECK: "Q"
; CHECK: "P"
; CHECK: "O"
; CHECK: "N"
; CHECK: "M"
; CHECK: "L"
; CHECK: "K"
; CHECK: "J"
; CHECK: "I"
; CHECK: "H"
; CHECK: "G"
; CHECK: "F"
; CHECK: "E"
; CHECK: "D"
; CHECK: "C"
; CHECK: "B"
; CHECK: "A"
; CHECK: "@"
; CHECK: "?"
; CHECK: ">"
; CHECK: "="
; CHECK: "<"
; CHECK: ";"
; CHECK: ":"
; CHECK: "9"
; CHECK: "8"
; CHECK: "7"
; CHECK: "6"
; CHECK: "5"
; CHECK: "4"
; CHECK: "3"
; CHECK: "2"
; CHECK: "1"
; CHECK: "0"
; CHECK: "/"
; CHECK: "."
; CHECK: "-"
; CHECK: ","
; CHECK: "+"
; CHECK: "*"
; CHECK: ")"
; CHECK: "("
; CHECK: "\'"
; CHECK: "&"
; CHECK: "%"
; CHECK: "$"
; CHECK: "#"
; CHECK: "\""
; CHECK: "!"
; CHECK: " "
; CHECK: "\x1F"
; CHECK: "\x1E"
; CHECK: "\x1D"
; CHECK: "\x1C"
; CHECK: "\x1B"
; CHECK: "\x1A"
; CHECK: "\x19"
; CHECK: "\x18"
; CHECK: "\x17"
; CHECK: "\x16"
; CHECK: "\x15"
; CHECK: "\x14"
; CHECK: "\x13"
; CHECK: "\x12"
; CHECK: "\x11"
; CHECK: "\x10"
; CHECK: "\x0F"
; CHECK: "\x0E"
; CHECK: "\r"
; CHECK: "\f"
; CHECK: "\v"
; CHECK: "\n"
; CHECK: "\t"
; CHECK: "\b"
; CHECK: "\a"
; CHECK: "\x06"
; CHECK: "\x05"
; CHECK: "\x04"
; CHECK: "\x03"
; CHECK: "\x02"
; CHECK: "\x01"

; The mangling doesn't distinguish between char and char16 types, so even though
; this was originally written as a char[] with one embedded null, it mangles
; identically to a char16_t[] that is empty.  So when demangling, we choose the
; "smartest" one, which happened to be wrong, but it's still a "better"
; demangling.
; CHECK: u""


??_C@_13KDLDGPGJ@?$AA?7?$AA?$AA@
??_C@_13LBAGMAIH@?$AA?6?$AA?$AA@
??_C@_13JLKKHOC@?$AA?$AL?$AA?$AA@
??_C@_13HOIJIPNN@?$AA?5?$AA?$AA@
??_C@_13MGDFOILI@?$AA?$CB?$AA?$AA@
??_C@_13NEIAEHFG@?$AA?$CC?$AA?$AA@
??_C@_13GMDMCADD@?$AA?$CD?$AA?$AA@
??_C@_13PBOLBIIK@?$AA$?$AA?$AA@
??_C@_13EJFHHPOP@?$AA?$CF?$AA?$AA@
??_C@_13FLOCNAAB@?$AA?$CG?$AA?$AA@
??_C@_13ODFOLHGE@?$AA?8?$AA?$AA@
??_C@_13LLDNKHDC@?$AA?$CI?$AA?$AA@
??_C@_13DIBMAFH@?$AA?$CJ?$AA?$AA@
??_C@_13BBDEGPLJ@?$AA?$CK?$AA?$AA@
??_C@_13KJIIAINM@?$AA?$CL?$AA?$AA@
??_C@_13DEFPDAGF@?$AA?0?$AA?$AA@
??_C@_13IMODFHAA@?$AA?9?$AA?$AA@
??_C@_13JOFGPIOO@?$AA?4?$AA?$AA@
??_C@_13CGOKJPIL@?$AA?1?$AA?$AA@
??_C@_13COJANIEC@?$AA0?$AA?$AA@
??_C@_13JGCMLPCH@?$AA1?$AA?$AA@
??_C@_13IEJJBAMJ@?$AA2?$AA?$AA@
??_C@_13DMCFHHKM@?$AA3?$AA?$AA@
??_C@_13KBPCEPBF@?$AA4?$AA?$AA@
??_C@_13BJEOCIHA@?$AA5?$AA?$AA@
??_C@_13LPLIHJO@?$AA6?$AA?$AA@
??_C@_13LDEHOAPL@?$AA7?$AA?$AA@
??_C@_13OLCEPAKN@?$AA8?$AA?$AA@
??_C@_13FDJIJHMI@?$AA9?$AA?$AA@
??_C@_13EBCNDICG@?$AA?3?$AA?$AA@
??_C@_13PJJBFPED@?$AA?$DL?$AA?$AA@
??_C@_13GEEGGHPK@?$AA?$DM?$AA?$AA@
??_C@_13NMPKAAJP@?$AA?$DN?$AA?$AA@
??_C@_13MOEPKPHB@?$AA?$DO?$AA?$AA@
??_C@_13HGPDMIBE@?$AA?$DP?$AA?$AA@
??_C@_13EFKPHINO@?$AA?$EA?$AA?$AA@
??_C@_13PNBDBPLL@?$AAA?$AA?$AA@
??_C@_13OPKGLAFF@?$AAB?$AA?$AA@
??_C@_13FHBKNHDA@?$AAC?$AA?$AA@
??_C@_13MKMNOPIJ@?$AAD?$AA?$AA@
??_C@_13HCHBIIOM@?$AAE?$AA?$AA@
??_C@_13GAMECHAC@?$AAF?$AA?$AA@
??_C@_13NIHIEAGH@?$AAG?$AA?$AA@
??_C@_13IABLFADB@?$AAH?$AA?$AA@
??_C@_13DIKHDHFE@?$AAI?$AA?$AA@
??_C@_13CKBCJILK@?$AAJ?$AA?$AA@
??_C@_13JCKOPPNP@?$AAK?$AA?$AA@
??_C@_13PHJMHGG@?$AAL?$AA?$AA@
??_C@_13LHMFKAAD@?$AAM?$AA?$AA@
??_C@_13KFHAAPON@?$AAN?$AA?$AA@
??_C@_13BNMMGIII@?$AAO?$AA?$AA@
??_C@_13BFLGCPEB@?$AAP?$AA?$AA@
??_C@_13KNAKEICE@?$AAQ?$AA?$AA@
??_C@_13LPLPOHMK@?$AAR?$AA?$AA@
??_C@_13HADIAKP@?$AAS?$AA?$AA@
??_C@_13JKNELIBG@?$AAT?$AA?$AA@
??_C@_13CCGINPHD@?$AAU?$AA?$AA@
??_C@_13DANNHAJN@?$AAV?$AA?$AA@
??_C@_13IIGBBHPI@?$AAW?$AA?$AA@
??_C@_13NAACAHKO@?$AAX?$AA?$AA@
??_C@_13GILOGAML@?$AAY?$AA?$AA@
??_C@_13HKALMPCF@?$AAZ?$AA?$AA@
??_C@_13MCLHKIEA@?$AA?$FL?$AA?$AA@
??_C@_13FPGAJAPJ@?$AA?2?$AA?$AA@
??_C@_13OHNMPHJM@?$AA?$FN?$AA?$AA@
??_C@_13PFGJFIHC@?$AA?$FO?$AA?$AA@
??_C@_13ENNFDPBH@?$AA_?$AA?$AA@
??_C@_13OFJNNHOA@?$AA?$GA?$AA?$AA@
??_C@_13FNCBLAIF@?$AAa?$AA?$AA@
??_C@_13EPJEBPGL@?$AAb?$AA?$AA@
??_C@_13PHCIHIAO@?$AAc?$AA?$AA@
??_C@_13GKPPEALH@?$AAd?$AA?$AA@
??_C@_13NCEDCHNC@?$AAe?$AA?$AA@
??_C@_13MAPGIIDM@?$AAf?$AA?$AA@
??_C@_13HIEKOPFJ@?$AAg?$AA?$AA@
??_C@_13CACJPPAP@?$AAh?$AA?$AA@
??_C@_13JIJFJIGK@?$AAi?$AA?$AA@
??_C@_13IKCADHIE@?$AAj?$AA?$AA@
??_C@_13DCJMFAOB@?$AAk?$AA?$AA@
??_C@_13KPELGIFI@?$AAl?$AA?$AA@
??_C@_13BHPHAPDN@?$AAm?$AA?$AA@
??_C@_13FECKAND@?$AAn?$AA?$AA@
??_C@_13LNPOMHLG@?$AAo?$AA?$AA@
??_C@_13LFIEIAHP@?$AAp?$AA?$AA@
??_C@_13NDIOHBK@?$AAq?$AA?$AA@
??_C@_13BPINEIPE@?$AAr?$AA?$AA@
??_C@_13KHDBCPJB@?$AAs?$AA?$AA@
??_C@_13DKOGBHCI@?$AAt?$AA?$AA@
??_C@_13ICFKHAEN@?$AAu?$AA?$AA@
??_C@_13JAOPNPKD@?$AAv?$AA?$AA@
??_C@_13CIFDLIMG@?$AAw?$AA?$AA@
??_C@_13HADAKIJA@?$AAx?$AA?$AA@
??_C@_13MIIMMPPF@?$AAy?$AA?$AA@
??_C@_13NKDJGABL@?$AAz?$AA?$AA@
??_C@_13GCIFAHHO@?$AA?$HL?$AA?$AA@
??_C@_13PPFCDPMH@?$AA?$HM?$AA?$AA@
??_C@_13EHOOFIKC@?$AA?$HN?$AA?$AA@
??_C@_13FFFLPHEM@?$AA?$HO?$AA?$AA@

; CHECK: L"\t"
; CHECK: L"\n"
; CHECK: L"\v"
; CHECK: L" "
; CHECK: L"!"
; CHECK: L"\""
; CHECK: L"#"
; CHECK: L"$"
; CHECK: L"%"
; CHECK: L"&"
; CHECK: L"\'"
; CHECK: L"("
; CHECK: L")"
; CHECK: L"*"
; CHECK: L"+"
; CHECK: L","
; CHECK: L"-"
; CHECK: L"."
; CHECK: L"/"
; CHECK: L"0"
; CHECK: L"1"
; CHECK: L"2"
; CHECK: L"3"
; CHECK: L"4"
; CHECK: L"5"
; CHECK: L"6"
; CHECK: L"7"
; CHECK: L"8"
; CHECK: L"9"
; CHECK: L":"
; CHECK: L";"
; CHECK: L"<"
; CHECK: L"="
; CHECK: L">"
; CHECK: L"?"
; CHECK: L"@"
; CHECK: L"A"
; CHECK: L"B"
; CHECK: L"C"
; CHECK: L"D"
; CHECK: L"E"
; CHECK: L"F"
; CHECK: L"G"
; CHECK: L"H"
; CHECK: L"I"
; CHECK: L"J"
; CHECK: L"K"
; CHECK: L"L"
; CHECK: L"M"
; CHECK: L"N"
; CHECK: L"O"
; CHECK: L"P"
; CHECK: L"Q"
; CHECK: L"R"
; CHECK: L"S"
; CHECK: L"T"
; CHECK: L"U"
; CHECK: L"V"
; CHECK: L"W"
; CHECK: L"X"
; CHECK: L"Y"
; CHECK: L"Z"
; CHECK: L"["
; CHECK: L"\\"
; CHECK: L"]"
; CHECK: L"^"
; CHECK: L"_"
; CHECK: L"`"
; CHECK: L"a"
; CHECK: L"b"
; CHECK: L"c"
; CHECK: L"d"
; CHECK: L"e"
; CHECK: L"f"
; CHECK: L"g"
; CHECK: L"h"
; CHECK: L"i"
; CHECK: L"j"
; CHECK: L"k"
; CHECK: L"l"
; CHECK: L"m"
; CHECK: L"n"
; CHECK: L"o"
; CHECK: L"p"
; CHECK: L"q"
; CHECK: L"r"
; CHECK: L"s"
; CHECK: L"t"
; CHECK: L"u"
; CHECK: L"v"
; CHECK: L"w"
; CHECK: L"x"
; CHECK: L"y"
; CHECK: L"z"
; CHECK: L"{"
; CHECK: L"|"
; CHECK: L"}"
; CHECK: L"~"



??_C@_0CF@LABBIIMO@012345678901234567890123456789AB@
; CHECK: "012345678901234567890123456789AB"...

??_C@_1EK@KFPEBLPK@?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AAA?$AAB@
; CHECK: L"012345678901234567890123456789AB"...

??_C@_13IIHIAFKH@?W?$PP?$AA?$AA@
; CHECK: L"\xD7FF"

??_C@_03IIHIAFKH@?$PP?W?$AA?$AA@
; CHECK: u"\xD7FF"

??_C@_02PCEFGMJL@hi?$AA@
; CHECK: "hi"

??_C@_05OMLEGLOC@h?$AAi?$AA?$AA?$AA@
; CHECK: u"hi"

??_C@_0EK@FEAOBHPP@o?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA@
; CHECK: u"o123456789012345"...

??_C@_0M@GFNAJIPG@h?$AA?$AA?$AAi?$AA?$AA?$AA?$AA?$AA?$AA?$AA@
; CHECK: U"hi"

??_C@_0JE@IMHFEDAA@0?$AA?$AA?$AA1?$AA?$AA?$AA2?$AA?$AA?$AA3?$AA?$AA?$AA4?$AA?$AA?$AA5?$AA?$AA?$AA6?$AA?$AA?$AA7?$AA?$AA?$AA@
; CHECK: U"01234567"...

; These all have just the right length that the trailing 0 just fits.
??_C@_0CA@NMANGEKF@012345678901234567890123456789A?$AA@
; CHECK: "012345678901234567890123456789A"

??_C@_1EA@LJAFPILO@?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AAA?$AA?$AA@
; CHECK: L"012345678901234567890123456789A"

??_C@_0CA@NMANGEKF@012345678901234567890123456789A?$AA@
; CHECK: "012345678901234567890123456789A"

??_C@_0CA@NFEFHIFO@0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA?$AA?$AA@
; CHECK: u"012345678901234"

??_C@_0CA@KFPHPCC@0?$AA?$AA?$AA1?$AA?$AA?$AA2?$AA?$AA?$AA3?$AA?$AA?$AA4?$AA?$AA?$AA5?$AA?$AA?$AA6?$AA?$AA?$AA?$AA?$AA?$AA?$AA@
; CHECK: U"0123456"

; There are too many bytes encoded in this string literal (it should encode a max of 32 bytes)
; but some buggy compilers will incorrectly generate this, so we need to be able to demangle
; both the correct and incorrect versions.
??_C@_0CG@HJGBPLNO@l?$AAo?$AAo?$AAk?$AAA?$AAh?$AAe?$AAa?$AAd?$AAH?$AAa?$AAr?$AAd?$AAB?$AAr?$AAe?$AAa?$AAk?$AA?$AA?$AA@
; CHECK: u"lookAheadHardBreak"

??_C@_0CG@HJGBPLNO@l?$AAo?$AAo?$AAk?$AAA?$AAh?$AAe?$AAa?$AAd?$AAH?$AAa?$AAr?$AAd?$AAB?$AAr?$AAe?$AA@
; CHECK: u"lookAheadHardBre"...


; These are u16 strings that the diagnostic would classify as u32 -- except
; that their byte length % 4 is 2, so they can't be u32.

??_C@_05LABPAAN@b?$AA?$AA?$AA?$AA?$AA@
; CHECK: u"b\0"

??_C@_0CC@MBPKDIAM@a?$AA?$AA?$AAb?$AA?$AA?$AAc?$AA?$AA?$AAd?$AA?$AA?$AAe?$AA?$AA?$AAf?$AA?$AA?$AAg?$AA?$AA?$AAh?$AA?$AA?$AA@
; CHECK: u"a\0b\0c\0d\0e\0f\0g\0h\0"...

; This is technically not a valid u32 string since the character in it is not
; <= 0x10FFFF like unicode demands. (Also, the crc doesn't match the contents.)
; It's here because this input used to cause a stack overflow in outputHex().
; Both cl.exe and clang-cl produce it for `const char32_t* s = U"\x11223344";`

??_C@_07LJGFEJEB@D3?$CC?$BB?$AA?$AA?$AA?$AA@)
; CHECK: U"\x11223344"

; This has a string length of 0x6_0000_0000, so it's 0 if treated as a 32-bit
; number. (In practice, 24GiB large string literals should be rare.)
??_C@_0GAAAAAAAA@GPLEPFHO@01234567890123456789012345678901@
; CHECK: "01234567890123456789012345678901"...
